package com.xyy.saas.payment.adpater.pingxx.constants;

/**
 * @author chenshuyi
 * @date 2019/10/24 13:45
 */
public interface OrderConstants {

    /**类型：string；订单对象 ID，由 Ping++ 生成。 */
    public String ID = "id";

    /**类型：string；值为 "order"。 */
    public String OBJECT = "object";

    /**类型：timestamp；创建时间，用 Unix 时间戳表示。 */
    public String CREATED = "created";

    /**类型：boolean；是否是 live 模式。 */
    public String LIVE_MODE = "livemode";

    /**类型：string；订单应用。对应 app 对象的 id，查看 如何获取App ID。 */
    public String APP = "app";

    /**类型：string；目前订单支持状态。分为待支付：created、已付款：paid、存在退款：refunded、已取消：canceled。 */
    public String STATUS = "status";

    /**类型：boolean；是否已付款。当订单的已付金额 - 已退金额 ≥ 应付金额（amount_paid - amount_refunded ≥ actual_amount）时，该值变为 true 。 */
    public String PAID = "paid";

    /**类型：boolean；是否存在退款信息，无论退款是否成功。 */
    public String REFUNDED = "refunded";

    /**类型：string；消费者 user 对象的 id。 */
    public String UID = "uid";

    /**类型：int；原始金额，单位为分。 */
    public String AMOUNT = "amount";

    /**类型：int；优惠券折扣金额，单位为分。 */
    public String COUPON_AMOUNT = "coupon_amount";

    /**类型：int；应付金额，单位为分。值为原始金额减去优惠券折扣金额（amount - coupon_amount）。 */
    public String ACTUAL_AMOUNT = "actual_amount";

    /**类型：string；商户订单号，适配每个渠道对此参数的要求，必须在商户的系统内唯一。长度限制 8~20 位，要求数字或字母，不允许特殊字符。 */
    public String MERCHANT_ORDER_NO = "merchant_order_no";

    /**类型：int；已付金额，值为所有包含已付款的 charge 对象的 amount 总额，单位为分。 */
    public String AMOUNT_PAID = "amount_paid";

    /**类型：int；已退金额（成功退款的金额），值为所有包含有退款的 charge 对象的 amount_refunded 总额，单位为分。 */
    public String AMOUNT_REFUNDED = "amount_refunded";

    /**类型：string；3 位 ISO 货币代码，小写字母，人民币为 cny。 */
    public String CURRENCY = "currency";

    /**类型：string；商品标题。 */
    public String SUBJECT = "subject";

    /**类型：string；商品描述信息。 */
    public String BODY = "body";

    /**类型：ip address；发起支付请求客户端的 IP 地址，支持 IPv4、IPv6 格式。 */
    public String CLIENT_IP = "client_ip";

    /**类型：timestamp；付款完成时间，用 Unix 时间戳表示。 */
    public String TIME_PAID = "time_paid";

    /**类型：timestamp；订单过期时间，用 Unix 时间戳表示。时间范围在订单创建后的 5 分钟到 7 天，默认值为 1 天，创建时间以 Ping++ 服务器时间为准。如果订单到达过期时间仍未完成付款，则会自动变为 canceled 状态。 */
    public String TIME_EXPIRE = "time_expire";

    /**类型：string；使用的 coupon 对象的 id。 */
    public String COUPON = "coupon";

    /**类型：int；订单支付前，消费者 user 的可用余额，单位为分。 */
    public String AVAILABLE_BALANCE = "available_balance";

    /**类型：string；收款方 app 对象的 id。订单使用收款方应用的渠道参数进行支付。 */
    public String RECEIPT_APP = "receipt_app";

    /**类型：string；服务方 app 对象的 id。表示承接该交易服务的应用，由服务方和平台确定订单的层级链都能查询到该 order 对象。 */
    public String SERVICE_APP = "service_app";

    /**类型：list；可使用支付渠道列表。如果收款方是子商户，会展示该子商户可使用的支付渠道。客户端可以根据此列表展示合适的支付渠道供用户选择。 */
    public String AVAILABLE_METHODS = "available_methods";

    /**类型：hash；最近一次请求的支付所需的支付要素，用于客户端打开支付控件、支付页面、显示二维码等。包括 channel、transaction_no、credential、extra 等要素。 */
    public String CHARGE_ESSENTIALS = "charge_essentials";

    /**类型：list；关联的 charge 对象列表，其中 charge 对象不包含 refund 对象。 */
    public String CHARGES = "charges";

    /**类型：string；订单附加说明，最多 255 个 Unicode 字符。 */
    public String DESCRIPTION = "description";

    /**类型：hash；详见 元数据。 */
    public String METADATA = "metadata";

    public String CHARGE_ORDER_NO = "charge_order_no";

    public String CHANNEL = "channel";

    public String CHARGE_AMOUNT = "charge_amount";

    public String BALANCE_SETTLEMENT = "balance_settlement";

    /**
     * 直连支付宝APP返回的前缀
     */
    String ALI_APP = "alipay_sdk=alipay-sdk-java-dynamicVersionNo&";

    /**
     * ping++支付宝支付APP返回的前缀
     */
    String ALI_APP_PING = "{orderInfo=";
}
